# 使用官方 Python 镜像作为基础
FROM python:3.9-slim

# 设置工作目录
WORKDIR /app

# 设置 Flask SECRET_KEY 环境变量，用于会话加密。请在生产环境中更改此值。
ENV FLASK_SECRET_KEY="your_default_secret_key_here_please_change_this"

# 为 Ultralytics 设置可写的配置目录，以避免权限警告
ENV YOLO_CONFIG_DIR=/tmp

# 配置 apt 使用阿里云镜像源
RUN echo "deb http://mirrors.aliyun.com/debian/ bullseye main contrib non-free" > /etc/apt/sources.list \
    && echo "deb http://mirrors.aliyun.com/debian/ bullseye-updates main contrib non-free" >> /etc/apt/sources.list \
    && echo "deb http://mirrors.aliyun.com/debian-security bullseye-security main contrib non-free" >> /etc/apt/sources.list

# 安装系统依赖，用于 OpenCV
RUN apt-get update && apt-get install -y libgl1-mesa-glx libglib2.0-0

# 复制依赖文件并安装
COPY requirements.txt .
RUN pip install --no-cache-dir -r requirements.txt -i https://mirrors.aliyun.com/pypi/simple/

# 复制项目文件
COPY . .

# 将模型文件预先复制到镜像中，使其可以独立运行
COPY models /app/models

# 暴露端口
EXPOSE 8000

# 设置 Gunicorn 工作进程数的环境变量，并提供一个默认值
ENV WORKERS=4

# 使用 Gunicorn 启动应用，进程数由环境变量决定
# 使用 shell 格式以确保 $WORKERS 环境变量能被正确解析
CMD gunicorn --workers ${WORKERS} --bind 0.0.0.0:8000 app:app
